interface ContractSo {
  keyword: string;
  contractStartTime: string;
  contractEndTime: string;
  uploadStartTime: string;
  uploadEndTime: string;
  clienteleId: string;
}

interface ContractPageVo {
  id: string;
  contractName: string;
  contractDate: string;
  ownUserName: string;
  clienteleName: string;
  createTime: string;
}

interface ContractFileDto {
  id: string;
  fileName: string;
  fileUrl: string;
  fileType: string;
  fileSize: string;
}

interface AssetPageVo {
  id: string;
  assetCode: string;
  assetEpc: string;
  assetName: string;
  assetType: string;
  clientName: string;
  assetStatus: string;
  assetLocation: string;
  assetFloor: string;
  assetPosition: string;
  limitDate: string;
  remark: string;
  createTime: string;
  updateTime: string;
}

interface AssetBo {
  assetName: string;
  assetCode: string;
  clientId: string | undefined;
  floorName: string;
  positionName: string;
  address: string;
  assetImage: string;
  remark: string;
}

interface AssetSo {
  keyword: string;
  clientId: string;
  floorId: string;
  positionId: string;
  onlyBind:number;
}

interface ClientVo {
  id: string;
  clientName: string;
  createTime: string;
}

interface ClientBo {
  clientName: string;
}

interface PageRequest<T> {
  current: string;
  size: string;
  query: T;
}

interface PageRespons<T> {
  records: T[];
  current: number;
  total: number;
}

interface AddUserBo {
  userName: string;
  realName: string;
  userTel: string
  password: string;
}

interface PageUserSo {

}

interface PageUserVo {
  id: string,
  userName: string,
  realName: string;
  userTel: string;
  sex: string;
  email: string;
  avatar: string;
  isLock: string;
  lastLoginIp: string;
  lastLoginTime: string;
  tenantName: string;
}

interface PageTransferSo {
  keyword: string;
  assetId: string;
  transferStartTime: string;
  transferEndTime: string;
}

interface PageTransferVo {
  assetId: string;
  assetName: string;
  assetCode: string;
  originalFloor: string;
  originalPosition: string;
  originalAddress: string;
  currentFloor: string;
  currentPosition: string;
  currentAddress: string;
  reason: string;
  transferBy: string;
  transferTime: string;
}

interface FloorVo {
  id: string;
  clientId: string;
  floor: string;
}

interface PositionVo {
  id: string;
  floorId: string;
  position: string;
}

interface TransferSubmitBo {
  floorId: string;
  positionId: string;
  address: string;
  reason: string;
  assetIds: string;
}

interface LifecycleVo {
  eventTime: string,
  content: string,
}

interface OutboundSubmitBo {
  reason: string,
  assets: string[],
}
interface OutboundPageSo {
  keyword: string,
  startTime: string,
  endTime: string,
  clientId: string|undefined,
}

interface OutboundPageVo {
  id: string,
  assetCode: string,
  assetName: string,
  assetEpc: string,
  clientName: string,
  assetFloor: string,
  assetPosition: string,
  address: string,
  reason: string,
  createBy: string,
  createTime: string,
}

interface AssetEpcRelationSo {
  keyword: string,
}

interface AssetEpcRelationVo {
  assetCode: string,
  epc: string,
}

export type {
  PageRequest,
  ContractPageVo,
  ContractSo,
  ContractFileDto,
  AssetPageVo,
  AssetBo,
  ClientVo,
  ClientBo,
  AddUserBo,
  PageUserSo,
  PageUserVo,
  PageTransferVo,
  PageTransferSo,
  FloorVo,
  PositionVo,
  AssetSo,
  TransferSubmitBo,
  LifecycleVo,
  OutboundSubmitBo,
  OutboundPageSo,
  OutboundPageVo,
  AssetEpcRelationSo,
  AssetEpcRelationVo,
  PageRespons,
};
